This invention relates to a method and data processing system for mitigating packet losses for a stream of transmitted data packets.
Real-time streaming of multimedia content over the internet has become an increasingly common application in recent years. A wide range of multimedia applications, such as on-demand TV, live TV viewing, video conferencing, net meetings, video telephony and many others rely on end-to-end streaming solutions. Unlike a “downloaded” video file, which may be retrieved first in “non-real” time and viewed or played back later, streaming video applications require a video source to encode and to transmit a video signal over a network to a video receiver, which must decode and display the video signal in real time.
Compression techniques for transmitting video data can use so-called reference frames. When compressing blocks of video data, the encoding process can generate intra frames (I-frames). An I-frame is a compressed version of a frame which can be decompressed using only the information in the I-frame itself, and without reference to other frames. They are sometimes referred to as key frames. Another type of frame can also be generated, which are sometimes referred to as inter or predictive frame (P-frames), which are generated by predictive inter frame coding based on a reference frame. The reference frame can be the preceding frame, or it could be a different earlier or later frame in a sequence of frames. The size of the encoded frames can also depend upon the amount of detail in the video sequence to be encoded. Thus, I-frames generally require a greater amount of data than P-frames as I-frames are not based on any other frames.
Problems can arise when a streaming video signal is transmitted across a network, such as the Internet. For example, a significant packet loss rate across the transmission network often requires re-transmission of the lost packets. Typically, the lost data packets needs be recovered prior to the time the corresponding frame must be decoded. If the lost packet is not received, the current frame being processed as well as the subsequent frames can be adversely affected because of the predictive coding. Thus some error correction methods are needed.
Forward Error Correction (FEC) is a method in which some redundant packets (repair packets) are sent to a receiver along with the source data packets. The repair packets allow packet losses to be recovered at the receiver. The repair packets are included in the transmitted stream of packets before it is known whether any packet losses have occurred at the receiver and if any repairs are necessary. The advantage of FEC is that retransmission of data can often be avoided (at the cost of higher bandwidth requirements on average) and is therefore applied in situations where longer round-trip transmission latencies or the lack of a feedback channel can make retransmissions infeasible or impossible. Typical scenarios include, for example, real-time voice or video data, IP multimedia multicasting, and wireless broadcasting systems.
In FEC, the transmitting device introduces N−K repair packets for every K data packets transmitted. FEC codes such as Reed-Solomon have a zero reception overhead and an associated error recovery probability of 1. This implies that when the receiver receives any and at least K out of the N number of packets, the receiver can successfully recover all the K data packets at all times. The reception overhead and corresponding error recovery probability varies for different FEC codes by their design. For codes having a reception overhead δ and a corresponding error recovery probability of n, the receipt of K(1+δ) packets will lead to an error recovery probability of n. The examples herein consider an FEC code with zero reception code overhead.